package 简单.模拟;

/**
 * 环形公交路线上有 n 个站，按次序从 0 到 n - 1 进行编号。我们已知每
 * 一对相邻公交站之间的距离，distance[i] 表示编号为 i 的车站和编号
 * 为 (i + 1) % n 的车站之间的距离。
 * 环线上的公交车都可以按顺时针和逆时针的方向行驶。
 * 返回乘客从出发点 start 到目的地 destination 之间的最短距离。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/distance-between-bus-stops
 */
public class 公交站间的距离_1184 {

    public static void main(String[] args) {

    }

    /**
     * 发现规律
     * i >= start && i < destination 为顺时针需要的路程
     * 注意：需要将 start 设置成比较小的那一个站点
     *
     * @param distance
     * @param start
     * @param destination
     * @return
     */
    public int distanceBetweenBusStops(int[] distance, int start, int destination) {
        int t = start;
        start = Math.min(start, destination);
        destination = Math.max(t, destination);
        int part1 = 0, part2 = 0;
        for (int i = 0; i < distance.length; i++) {
            if (i >= start && i < destination) {
                part1 += distance[i];
            } else {
                part2 += distance[i];
            }
        }
        return Math.min(part1, part2);
    }

}
